package de.g18.gruppe3.ldapinterface.service;

import javax.naming.AuthenticationException;
import javax.naming.NamingException;

import de.g18.gruppe3.common.exception.WrongUsernameAndOrPasswordException;
import de.g18.gruppe3.common.ldap.LoginService;
import de.g18.gruppe3.common.model.AccountAdmin;

/**
 * Implementierung des {@link LoginService}
 *
 * @author <a href="mailto:kevinhuber.kh@gmail.com">Kevin Huber</a>
 */
public class LoginServiceImpl implements LoginService {

    @Override
    public void login(AccountAdmin aAdmin) throws WrongUsernameAndOrPasswordException {
    	try {
    		LDAPContext.getInstance().connect(aAdmin);
    	} catch (AuthenticationException e) {
    		throw new WrongUsernameAndOrPasswordException();
    	} catch (NamingException e) {
            throw new IllegalStateException("LDAP Anmeldung fehlgeschlagen!", e);
        }
    }

    @Override
    public boolean isLoggedIn() {
        return LDAPContext.getInstance().isContextAvailable();
    }

    @Override
    public void logout() {
        try {
            LDAPContext.getInstance().close();
        } catch (NamingException e) {
            throw new IllegalStateException("LDAPContext konnte nicht geschlossen werden!", e);
        }
    }
}
